SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[SP_CONV_MONE_Q02]          
/*------------------------------------------------------*/            
/*---- Empresa           : OFISIS S.A.              ----*/            
/*---- Cliente           : OFISIS S.A.              ----*/            
/*---- Nombre FU         : SP_CONV_MONE_Q02 (PARA CANCELACIONES) ----*/            
/*---- Desarrollado por  : Alberto Jimenez          ----*/            
/*---- Fecha Creaci?n    : 10/02/2003               ----*/            
/*---- Base de Datos     : SLQ Server               ----*/            
/*---- Versi?n           : 8.0                      ----*/            
/*------------------------------------------------------*/            
/*------------------------------------------------------*/            
/*---Modificado 1 por     : PERCY GARCIA            ----*/          
/*---Fecha Modificaci?n   : 26/02/2004              ----*/          
/*---Detalle Modificaci?n :  SE AGREGO ROUND        ----*/          
/*------------------------------------------------------*/            
/*------------------------------------------------------*/            
/*---Modificado 1 por     : PERCY GARCIA            ----*/          
/*---Fecha Modificaci?n   : 26/02/2004              ----*/          
/*---Detalle Modificaci?n : VAIDACIONES PARA SU UTILIZACION EN CANCELACIONES ----*/          
/*------------------------------------------------------*/            
/*--- Drop PROCEDURE SP_CONV_MONE_Q02               ----*/          
/*--- Grant All on SP_CONV_MONE_Q02 To Public       ----*/          
/*--- SP_CONV_MONE_Q02 '01','LIB',1,'PAC','COM',0.64,'2002/11/15',00000,0 ONV OUTPUT---*/          
/*--- SP_CONV_MONE_Q02 '01','DOL','SOL', 'DOL', 'COM','COM', 3.1, '03/27/2004', 2000, 0  ONV OUTPUT---*/          
/*------------------------------------------------------*/            
  @ISCO_EMPR            TD_VC_002,          
  @ISCO_MONE_ORIG       TD_VC_003,          
  @ISCO_MONE_DEST       TD_VC_003,    
  @ISCO_MONE_FACT       TD_VC_003,            
  @ISTI_CAMB_0001       TD_VC_003,          
  @ISTI_CAMB_0002       TD_VC_003,          
  @INFA_CAMB_0001       TD_NU_015_006,           
  @IDFE_CAMB            TD_DT_001,          
  @INIM_ORIG            TD_NU_016_004,          
  @ONIM_CONV            TD_NU_016_004 OUTPUT          
             
AS          
Begin          
        
  Declare          
  @VSCO_MON1       TD_VC_003,          
  @VSCO_MONE_BAS1  TD_VC_003,          
  @VSTI_OPE1       TD_VC_001,          
  @VSCO_MON2       TD_VC_003,          
  @VSCO_MONE_BAS2  TD_VC_003,          
  @VSTI_OPE2       TD_VC_001,          
  @VSCO_BASE_INGR  TD_VC_003,          
  @VSCO_BASE_PASO  TD_VC_003,          
  @VNFA_CAMB_0001  TD_NU_015_006,          
  @VNFA_CAMB_0002  TD_NU_015_006          
          
  ---- Verificamos si ambas monenas son iguales          
  If @ISCO_MONE_ORIG !=  @ISCO_MONE_DEST          
  Begin          
    ----  Recupero monedas          
    Select @VSCO_MON1 = CO_MON1,          
    @VSCO_MONE_BAS1 = CO_MONE_BAS1,          
    @VSTI_OPE1 = TI_OPE1,          
    @VSCO_MON2 = CO_MON2,          
    @VSCO_MONE_BAS2 = CO_MONE_BAS2,          
    @VSTI_OPE2 = TI_OPE2          
    From   TMCONV_MONE           
    Where  CO_MONE_ORIG   = @ISCO_MONE_ORIG          
    And    CO_MONE_DEST   = @ISCO_MONE_DEST           
               
    ---- Solo convierte para Paso 1          
    If @VSCO_MON2 is null and @INIM_ORIG >0           
    Begin          
        
      --- EVALUA SI EL FACTOR DE CAMBIO != 0 Y MONEDA DE BASE DE CANCELACION = MONEDA BASE DEL 1er. PASO        
      If @INFA_CAMB_0001 Is Not NULL And @INFA_CAMB_0001 != 0 And @ISCO_MONE_FACT = @VSCO_MON1    
              
      Begin         
        Select @VNFA_CAMB_0001 = @INFA_CAMB_0001          
      End          
      Else          
      Begin          
        Select @VNFA_CAMB_0001 =           
           Case  @ISTI_CAMB_0001          
             When  'COM' Then FA_CMPR_OFIC          
             Else   FA_VNTA_OFIC           
      End           
        From  TCFACT_CAMB          
        Where   CO_MONE      = @VSCO_MON1          
        And     CO_MONE_BASE = @VSCO_MONE_BAS1          
        And     FE_CAMB      = @IDFE_CAMB                
      End          
  
      If @VNFA_CAMB_0001 Is Null Or @VNFA_CAMB_0001 = 0  
         Select @VNFA_CAMB_0001 = 1  
          
      If @VSTI_OPE1 = 'M'          
        Select @ONIM_CONV  =  Round(@INIM_ORIG * @VNFA_CAMB_0001, 2)          
      Else          
        Select @ONIM_CONV  =  Round(@INIM_ORIG / @VNFA_CAMB_0001, 2)          
    End           
          
    ---- Convierte cuando tiene Paso 1 y Paso 2          
    If @VSCO_MON1 is not null and @VSCO_MON2 is not null and @INIM_ORIG > 0 --and @INFA_CAMB_0001 > 0          
    Begin          
        
      If @INFA_CAMB_0001 Is Not NULL And @INFA_CAMB_0001 != 0 And @ISCO_MONE_FACT = @VSCO_MON1        
        Begin         
        Select @VNFA_CAMB_0001 = @INFA_CAMB_0001        
        End         
      Else         
        Begin         
        Select @VNFA_CAMB_0001 =           
           Case  @ISTI_CAMB_0001          
             When  'COM' Then FA_CMPR_OFIC          
             Else   FA_VNTA_OFIC           
           End           
        From    TCFACT_CAMB          
        Where   CO_MONE      = @VSCO_MON1          
        And     CO_MONE_BASE = @VSCO_MONE_BAS1          
        And     FE_CAMB      = @IDFE_CAMB                
        End         
  
      If @VNFA_CAMB_0001 Is Null Or @VNFA_CAMB_0001 = 0  
         Select @VNFA_CAMB_0001 = 1  
          
      If @VSTI_OPE1 = 'M'          
        Select @ONIM_CONV  =  Round(@INIM_ORIG * @VNFA_CAMB_0001, 2)          
      Else          
        Select @ONIM_CONV  =  Round(@INIM_ORIG / @VNFA_CAMB_0001, 2)          
            
        
      If @INFA_CAMB_0001 Is Not NULL And @INFA_CAMB_0001 != 0 And @ISCO_MONE_FACT = @VSCO_MON2    
        Begin         
        Select @VNFA_CAMB_0002 = @INFA_CAMB_0001        
        End           
      Else         
        Begin           
           Select @VNFA_CAMB_0002 =           
           Case  @ISTI_CAMB_0002          
             When  'COM' Then FA_CMPR_OFIC          
             Else   FA_VNTA_OFIC           
           End           
           From    TCFACT_CAMB          
           Where   CO_MONE      = @VSCO_MON2          
           And     CO_MONE_BASE = @VSCO_MONE_BAS2          
           And     FE_CAMB      = @IDFE_CAMB                
        End         
          
--      If IsNull(@VNFA_CAMB_0002,0) > 0          
--      Begin          
       If @VNFA_CAMB_0002 Is Null Or @VNFA_CAMB_0002 = 0  
         Select @VNFA_CAMB_0002 = 1  
  
        If @VSTI_OPE2 = 'M'          
          Select @ONIM_CONV  =  Round(@ONIM_CONV * @VNFA_CAMB_0002, 2)          
        Else          
          Select @ONIM_CONV  =  Round(@ONIM_CONV / @VNFA_CAMB_0002, 2)          
--      End           
--      Else          
--        Select @ONIM_CONV = 0          
      End          
    ---- Si importe original es 0          
    If @INIM_ORIG = 0          
 Select @ONIM_CONV = 0          
    End          
          
  If @ISCO_MONE_ORIG =  @ISCO_MONE_DEST          
 Select @ONIM_CONV  =  Round(@INIM_ORIG, 2)          
          
   Select @ONIM_CONV          
End          
          
Return          
/*----------------fin Funcion---------------------------*/        
    

GO
